package juc2.volatiledome;

/**
 * 多个线程独立修改不同的 volatile 变量
 */
public class VolatileIndependentDemo {
    private volatile int a = 0;
    private volatile int b = 0;
    // 线程1：修改a
    public void updateA() {
        System.out.println("线程1：修改a ：a=" + a);
        a = 1;
    }
    // 线程2：修改b
    public void updateB() {
        System.out.println("线程2：修改b ：b=" + b);
        b = 2;
    }
    // 线程3：观察a和b
    public void observe() {
        System.out.println("线程3：观察a和b");
        System.out.println("a=" + a + ", b=" + b);
    }
    public static void main(String[] args) throws InterruptedException {
        VolatileIndependentDemo demo = new VolatileIndependentDemo();

        new Thread(demo::updateA).start();
        new Thread(demo::updateB).start();
        Thread.sleep(100); // 等待更新完成
        new Thread(demo::observe).start(); // 输出：a=1, b=2
    }
}
